解决KEIL或IAR在莫名其妙的地方报expect a “)”或expect a “;”错误的问题

您所在的位置:网站首页 编译器bug 寻找 解决KEIL或IAR在莫名其妙的地方报expect a “)”或expect a “;”错误的问题

解决KEIL或IAR在莫名其妙的地方报expect a “)”或expect a “;”错误的问题

2024-01-11 05:10| 来源: 网络整理| 查看: 265

背景

楼主在写代码时遇到个问题,查找莫名其妙的地方报错expect a “)”或expect a “;”,如下图:

错误代码段error提示

寻找原因

楼主百思不得其解,试过将KEIL的编译器版本改为6,此时这段代码不再报故障,但是并不知道根本原因,最后在CSDN查到了这篇文章 链接: https://blog.csdn.net/zhzht19861011/article/details/5823537,文中提到:

6.error: #18: expected a ")" 如果是出现在c文件中, 多半是因为少了一个")",或者错误行有编译器不识别的字符 如果出现在头文件中,错误行又是一个函数声明,多半是因为在函数声明中有编译器不认识的字符.

再仔细看看代码上下文,这才找出原因所在。

柳暗花明

原因在于,没有结合前面的error起来一起看,编译器不认识uint32_t,因此也就无法定义出ulCurrentInterrupt这个变量,因此在后文中ulCurrentInterrupt右边的括号编译器并未识别到,进而提示该段缺少“)”。

异曲同工

IAR中也存在类似问题,如下图: 错误代码段error提示 这两个error也是一样,得解决前面的error,不能光看后一个error。前者出现的原因是:__INLINE的宏定义编译器并未找到,于是编译器将其当成静态变量,因此提示将变量类型定义为int 类型并且提示缺少分号。解决方法将__INLINE改为inline即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3